CREATE PROCEDURE [dbo].[SP_POVOAR_VENDA]
AS
BEGIN
	DECLARE @CODIGO_PAGAMENTO INT,
			@CODIGO_FUNCIONARIO INT,
			@CODIGO_LOJA INT,
			@CODIGO_DATA INT,
			@CODIGO_CLIENTE INT,
			@DATA DATETIME,
			@DIA INT,
			@MES INT,
			@ANO INT,
			@VALOR NUMERIC(10,2),
			@QUANTIDADE INT,
			@MAIOR INT,
			@VALIDO INT,
			@CODIGO_VENDA INT,
			@CODIGO_PRODUTO INT

	SELECT @MAIOR = MAX(CODIGO) FROM TB_FORMAPAGAMENTO
	
	SET @VALIDO = 0
	WHILE (@VALIDO != 1)
	BEGIN
		SET @CODIGO_PAGAMENTO = ROUND((@MAIOR) * RAND() + 1,0)

		IF (EXISTS (SELECT * FROM TB_FORMAPAGAMENTO WHERE CODIGO = @CODIGO_PAGAMENTO))
			SET @VALIDO = 1
	END

	SELECT @MAIOR = MAX(CODIGO) FROM TB_FUNCIONARIO
	
	SET @VALIDO = 0
	WHILE (@VALIDO != 1)
	BEGIN
		SET @CODIGO_FUNCIONARIO = ROUND((@MAIOR) * RAND() + 1,0)

		IF (EXISTS (SELECT * FROM TB_FUNCIONARIO WHERE CODIGO = @CODIGO_FUNCIONARIO))
			SET @VALIDO = 1
	END

	SELECT @MAIOR = MAX(CODIGO) FROM TB_LOJA
	
	SET @VALIDO = 0
	WHILE (@VALIDO != 1)
	BEGIN
		SET @CODIGO_LOJA = ROUND((@MAIOR) * RAND() + 1,0)

		IF (EXISTS (SELECT * FROM TB_LOJA WHERE CODIGO = @CODIGO_LOJA))
			SET @VALIDO = 1
	END

	SELECT @MAIOR = MAX(CODIGO) FROM TB_DATACOMEMORATIVA
	
	SET @VALIDO = 0
	WHILE (@VALIDO != 1)
	BEGIN
		SET @CODIGO_DATA = ROUND((@MAIOR) * RAND() + 1,0)

		IF (EXISTS (SELECT * FROM TB_DATACOMEMORATIVA WHERE CODIGO = @CODIGO_DATA))
			SET @VALIDO = 1
	END

	SELECT @MAIOR = MAX(CODIGO) FROM TB_CLIENTE
	
	SET @VALIDO = 0
	WHILE (@VALIDO != 1)
	BEGIN
		SET @CODIGO_CLIENTE = ROUND((@MAIOR) * RAND() + 1,0)

		IF (EXISTS (SELECT * FROM TB_CLIENTE WHERE CODIGO = @CODIGO_CLIENTE))
			SET @VALIDO = 1
	END

	SET @DIA = ROUND(((29 * RAND()) + 1),0)
	SET @MES = ROUND(((11 * RAND()) + 1),0)
	SET @ANO = ROUND(((11 * RAND()) + 2000),0)

	SET @DATA = CONVERT(DATETIME, RTRIM(LTRIM(STR(@MES))) + '/' + RTRIM(LTRIM(STR(@DIA))) + '/' + RTRIM(LTRIM(STR(@ANO))))
	
	SET @QUANTIDADE = ROUND(100*RAND()+1,0)

	INSERT INTO TB_VENDA
		(TB_FORMAPAGAMENTO_CODIGO, TB_FUNCIONARIO_CODIGO, TB_LOJA_CODIGO, 
		 TB_DATACOMEMORATIVA_CODIGO, TB_CLIENTE_CODIGO, DATA_VENDA, VALOR_TOTAL)
		VALUES
		(@CODIGO_PAGAMENTO, @CODIGO_FUNCIONARIO, @CODIGO_LOJA, @CODIGO_DATA,
		 @CODIGO_CLIENTE, @DATA, @QUANTIDADE)
		 
		 
	SELECT @CODIGO_VENDA = MAX(CODIGO) FROM TB_VENDA 
	
	SELECT @MAIOR = MAX(CODIGO) FROM TB_PRODUTO
	
	SET @VALIDO = 0
	WHILE (@VALIDO != 1)
	BEGIN
		SET @CODIGO_PRODUTO = ROUND((@MAIOR) * RAND() + 1,0)

		IF (EXISTS (SELECT * FROM TB_PRODUTO WHERE CODIGO = @CODIGO_PRODUTO))
			SET @VALIDO = 1
	END
	
	SELECT @VALOR = VALOR FROM TB_PRODUTO WHERE @CODIGO_PRODUTO = CODIGO
	
	SET @VALOR = @VALOR * @QUANTIDADE
	
	INSERT INTO PRODUTO_VENDA VALUES(@CODIGO_PRODUTO,@CODIGO_VENDA)
	
	UPDATE TB_VENDA SET VALOR_TOTAL = @VALOR WHERE CODIGO = @CODIGO_VENDA
END
GO

CREATE PROCEDURE SP_QUANTIDADE_VENDA (@QUANTIDADE INT)
AS
BEGIN
	IF (@QUANTIDADE > 0)
	BEGIN
		WHILE (@QUANTIDADE > 0)
		BEGIN
			EXEC SP_POVOAR_VENDA
			SET @QUANTIDADE = @QUANTIDADE - 1
		END
	END
END


